home *** CD-ROM | disk | FTP | other *** search
/ 17 Bit Software 6: Level 6 / 17 Bit - Level 6 (1998)(Epic Marketing)[!].iso / quartz / q0052.dms / q0052.adf / SOURCES / NPReplayV1.00I.S < prev    next >
Text File  |  1991-06-28  |  5KB  |  326 lines

  1. * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  2. * NoisePacker V1.0 PlayRoutine ©1990 Twins of Phenomena *
  3. * Used registers are d0-d6/a0-a6. It use lev6irq.       *
  4. * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  5. m_data:    equ    $60000
  6.  
  7. m_init:    lea    m_data,a4
  8.     lea    $dff000,a5
  9.     lea    m_position(pc),a6
  10.     moveq    #2,d0
  11.     moveq    #0,d1
  12.     move.l    a4,a3
  13. m_init1:add    (a4)+,a3
  14.     move.l    a3,(a6)+
  15.     dbf    d0,m_init1
  16.     move    (a4)+,d0
  17.     add.l    d0,a3
  18.     move.l    $78.w,(a6)+
  19.     move.l    #$00060100,(a6)+
  20.     move.l    d1,(a6)+
  21.     move    d1,(a6)+
  22.     move.l    a4,a6
  23.     add    -8(a4),a6
  24.     sub    #12,a6
  25. m_init2:move.l    a3,(a4)
  26.     move.l    a3,a2
  27.     add    14(a4),a2
  28.     move.l    a2,8(a4)
  29.     move    4(a4),d0
  30.     lsl    #1,d0
  31.     add    d0,a3
  32.     add    #16,a4
  33.     cmp.l    a4,a6
  34.     bne.s    m_init2
  35.     bset    #1,$bfe001
  36.     move    d1,$a8(a5)
  37.     move    d1,$b8(a5)
  38.     move    d1,$c8(a5)
  39.     move    d1,$d8(a5)
  40.     lea    $bfd000,a0
  41.     move.b    #$7f,$d00(a0)
  42.     move.b    d1,$e00(a0)
  43.     move.b    #$ef,$400(a0)
  44.     move.b    d1,$500(a0)
  45.     move.b    #$81,$d00(a0)
  46.     move    #$2000,$9c(a5)
  47.     move    #$a000,$9a(a5)
  48.     rts
  49.  
  50. m_end:    lea    $dff000,a5
  51.     moveq    #0,d0
  52.     move    d0,$a8(a5)
  53.     move    d0,$b8(a5)
  54.     move    d0,$c8(a5)
  55.     move    d0,$d8(a5)
  56.     move    #$f,$96(a5)
  57.     move    #$2000,$9a(a5)
  58.     move.l    m_oldirq(pc),$78.w
  59.     rts
  60.  
  61. m_music:moveq    #0,d6
  62.     lea    $dff0d0,a4
  63.     lea    m_block(pc),a6
  64.     addq.b    #1,(a6)
  65.     move.b    (a6),d0
  66.     cmp.b    1(a6),d0
  67.     bne    m_nonew
  68.     move.b    d6,(a6)
  69.  
  70.     move.l    m_position(pc),a0
  71.     move    6(a6),d0
  72.     move    (a0,d0),d0
  73.     move.l    m_pattern(pc),a0
  74.     add    d0,a0
  75.     move.l    m_voice(pc),a1
  76.     add    8(a6),a1
  77.     lea    m_voidat1(pc),a2
  78.  
  79.     moveq    #8,d0
  80.     moveq    #0,d4
  81.     moveq    #0,d5
  82. m_loop1:moveq    #0,d2
  83.     moveq    #0,d1
  84.     move    (a0)+,d1
  85.     lea    (a1,d1.l),a3
  86.     moveq    #0,d1
  87.     move.b    (a3)+,d1
  88.     move.b    (a3)+,d3
  89.     move.b    (a3)+,d4
  90.     bclr    #0,d1
  91.     beq.s    m_loop2
  92.     moveq    #$10,d2
  93. m_loop2:tst.b    d1
  94.     beq.s    m_loop4
  95.     move.b    d1,(a2)
  96.     move    m_periods-2(pc,d1.w),d1
  97.     or    d0,d5
  98.     move    d1,6(a4)
  99.     move    d1,24(a2)
  100.     move.b    d6,5(a2)
  101.     move.b    d3,d1
  102.     lsr.b    #4,d1
  103.     or.b    d1,d2
  104.     bne.s    m_loop3
  105.     move.b    1(a2),d2
  106.     lea    m_data-8,a3
  107.     lsl    #4,d2
  108.     add    d2,a3
  109.     move.l    (a3)+,(a4)
  110.     move    (a3)+,4(a4)
  111.     addq    #2,a3
  112.     move.l    (a3)+,48(a2)
  113.     move    (a3)+,52(a2)
  114.     bra.s    m_loop4
  115. m_loop3:move.b    d2,1(a2)
  116.     lea    m_data-8,a3
  117.     lsl    #4,d2
  118.     add    d2,a3
  119.     move.l    (a3)+,(a4)
  120.     move    (a3)+,4(a4)
  121.     move    (a3)+,26(a2)
  122.     move.l    (a3)+,48(a2)
  123.     move    (a3)+,52(a2)
  124. m_loop4:and    #$f,d3
  125.     move.b    d3,2(a2)
  126.     move.b    d4,3(a2)
  127.     cmp.b    #$c,d3
  128.     bne    m_loop5
  129.     move    d4,26(a2)
  130.     bra    m_loop8
  131.  
  132. m_periods:
  133.     dc.w    $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c,$023a,$021a
  134.     dc.w    $01fc,$01e0,$01c5,$01ac,$0194,$017d,$0168,$0153,$0140
  135.     dc.w    $012e,$011d,$010d,$00fe,$00f0,$00e2,$00d6,$00ca,$00be
  136.     dc.w    $00b4,$00aa,$00a0,$0097,$008f,$0087,$007f,$0078,$0071
  137.  
  138. m_arp:    moveq    #0,d2
  139.     move.b    (a6),d2
  140.     move.b    m_arplist(pc,d2.w),d2
  141.     beq.s    m_arp0
  142.     cmp.b    #2,d2
  143.     beq.s    m_arp2
  144. m_arp1:    move.b    3(a0),d2
  145.     lsr    #3,d2
  146.     and    #$e,d2
  147.     bra.s    m_arp3
  148. m_arp2:    move.b    3(a0),d2
  149.     and    #$f,d2
  150.     lsl    #1,d2
  151. m_arp3:    moveq    #0,d3
  152.     move.b    (a0),d3
  153.     add    d2,d3
  154.     cmp    #$48,d3
  155.     bls.s    m_arp4
  156.     moveq    #$48,d3
  157. m_arp4:    move    m_periods-2(pc,d3.w),6(a4)
  158.     bra    m_lop3
  159. m_arp0:    move    24(a0),6(a4)
  160.     bra    m_lop3
  161.  
  162. m_arplist:
  163. dc.b 0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1
  164.  
  165. m_loop5:cmp.b    #$d,d3
  166.     bne.s    m_loop6
  167.     move    d6,2(a6)
  168.     bra.s    m_loop8
  169. m_loop6:cmp.b    #$b,d3
  170.     bne.s    m_loop7
  171.     move    d6,2(a6)
  172.     lsl    #1,d4
  173.     subq    #2,d4
  174.     move    d4,6(a6)
  175.     bra.s    m_loop8
  176. m_loop7:cmp.b    #$f,d3
  177.     bne.s    m_loop8
  178.     move.b    d4,1(a6)
  179. m_loop8:move    26(a2),8(a4)
  180.     addq    #6,a2
  181.     sub    #$10,a4
  182.     lsr    #1,d0
  183.     bne    m_loop1
  184.  
  185.     move    d5,$dff096
  186.     or    #$8000,d5
  187.     move    d5,4(a6)
  188.  
  189.     move.l    #m_irq1,$78.w
  190.     move.b    #$19,$bfde00
  191.  
  192.     move.l    m_position(pc),a0
  193.     bset    #0,2(a6)
  194.     beq.s    m_break
  195.     addq    #3,8(a6)
  196.     cmp    #192,8(a6)
  197.     bne.s    m_next
  198. m_break:move    d6,8(a6)
  199.     addq    #2,6(a6)
  200.     move    6(a6),d0
  201.     cmp    -4(a0),d0
  202.     bne.s    m_next
  203.     move    -2(a0),6(a6)
  204. m_next:    rts
  205.  
  206. m_nonew:lea    m_voidat1(pc),a0
  207.     moveq    #3,d0
  208. m_lop1:    move.b    2(a0),d1
  209.     bne.s    m_lop2
  210.     tst.b    3(a0)
  211.     bne    m_arp
  212. m_lop2:    cmp.b    #$1,d1
  213.     beq.s    m_portup
  214.     cmp.b    #$2,d1
  215.     beq.s    m_portdown
  216.     cmp.b    #$4,d1
  217.     beq.s    m_vib
  218.     cmp.b    #$6,d1
  219.     beq.s    m_vib2
  220.     cmp.b    #$a,d1
  221.     beq    m_volslide
  222. m_lop3:    addq    #6,a0
  223.     sub    #$10,a4
  224.     dbf    d0,m_lop1
  225.     rts
  226.  
  227. m_portup:
  228.     moveq    #0,d2
  229.     move.b    3(a0),d2
  230.     sub    d2,24(a0)
  231.     cmp    #$71,24(a0)
  232.     bpl.s    m_portup2
  233.     move    #$71,24(a0)
  234. m_portup2:
  235.     move    24(a0),6(a4)
  236.     bra.s    m_lop3
  237.  
  238. m_portdown:
  239.     moveq    #0,d2
  240.     move.b    3(a0),d2
  241.     add    d2,24(a0)
  242.     cmp    #$358,24(a0)
  243.     bmi.s    m_portdown2
  244.     move    #$358,24(a0)
  245. m_portdown2:
  246.     move    24(a0),6(a4)
  247.     bra.s    m_lop3
  248.  
  249. m_sin:
  250. dc.b $00,$18,$31,$4a,$61,$78,$8d,$a1,$b4,$c5,$d4,$e0,$eb,$f4,$fa,$fd
  251. dc.b $ff,$fd,$fa,$f4,$eb,$e0,$d4,$c5,$b4,$a1,$8d,$78,$61,$4a,$31,$18
  252.  
  253. m_vib:    move.b    3(a0),d3
  254.     beq.s    m_vib2
  255.     move.b    d3,4(a0)
  256.  
  257. m_vib2:    move.b    5(a0),d3
  258.     lsr    #2,d3
  259.     and    #$1f,d3
  260.     moveq    #0,d2
  261.     move.b    m_sin(pc,d3.w),d2
  262.     move.b    4(a0),d3
  263.     and    #$f,d3
  264.     mulu    d3,d2
  265.     lsr    #7,d2
  266.     move    24(a0),d3
  267.     tst.b    5(a0)
  268.     bmi.s    m_vibsub
  269.     add    d2,d3
  270.     bra.s    m_vib3
  271. m_vibsub:
  272.     sub    d2,d3
  273. m_vib3:    move    d3,6(a4)
  274.     move.b    4(a0),d3
  275.     lsr    #2,d3
  276.     and    #$3c,d3
  277.     add.b    d3,5(a0)
  278.     cmp.b    #$6,d1
  279.     beq.s    m_volslide
  280.     bra    m_lop3
  281.  
  282. m_volslide:
  283.     move.b    3(a0),d2
  284.     add.b    d2,27(a0)
  285.     bmi.s    m_vol3
  286.     cmp.b    #$40,27(a0)
  287.     bmi.s    m_vol2
  288.     move    #$40,26(a0)
  289. m_vol2:    move    26(a0),8(a4)
  290.     bra    m_lop3
  291.  
  292. m_vol3:    move    d6,26(a0)
  293.     move    26(a0),8(a4)
  294.     bra    m_lop3
  295.  
  296. m_irq1:    tst.b    $bfdd00
  297.     move.b    #$19,$bfde00
  298.     move.l    #m_irq2,$78.w
  299.     move    m_block+4(pc),$dff096
  300.     move    #$2000,$dff09c
  301.     rte
  302.  
  303. m_irq2:    tst.b    $bfdd00
  304.     move.l    a6,-(sp)
  305.     lea    m_voidat2(pc),a6
  306.     move.l    (a6)+,$dff0d0
  307.     move    (a6)+,$dff0d4
  308.     move.l    (a6)+,$dff0c0
  309.     move    (a6)+,$dff0c4
  310.     move.l    (a6)+,$dff0b0
  311.     move    (a6)+,$dff0b4
  312.     move.l    (a6)+,$dff0a0
  313.     move    (a6)+,$dff0a4
  314.     move    #$2000,$dff09c
  315.     move.l    (sp)+,a6
  316.     rte
  317.  
  318. m_position:    dc.l    0
  319. m_pattern:    dc.l    0
  320. m_voice:    dc.l    0
  321. m_oldirq:    dc.l    0
  322. m_block:    blk.w    5,0
  323. m_voidat1:    blk.l    12,0
  324. m_voidat2:    blk.l    6,0
  325.  
  326.